package com.dkd.day20250705;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main8 {
    public static void main(String[] args) {
        //题目描述
        //给出3组点坐标(x, y, w, h)，-1000<x,y<1000，w,h为正整数。
        //
        //(x, y, w, h)表示平面直角坐标系中的一个矩形：
        //
        //x, y为矩形左上角坐标点，w, h向右w，向下h。
        //
        //(x, y, w, h)表示x轴(x, x+w)和y轴(y, y-h)围成的矩形区域；
        //
        //(0, 0, 2, 2)表示 x轴(0, 2)和y 轴(0, -2)围成的矩形区域；
        //
        //(3, 5, 4, 6)表示x轴(3, 7)和y轴(5, -1)围成的矩形区域；
        //
        //求3组坐标构成的矩形区域重合部分的面积。
        Scanner sc = new Scanner(System.in);

        //
        List<Integer> xlist = new ArrayList<>();
        List<Integer> ylist = new ArrayList<>();
        List<Integer> martix = new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            int x = sc.nextInt();
            int y = sc.nextInt();
            int w = sc.nextInt();
            int h = sc.nextInt();

            int x2 = x + w;
            int y2 = y - h;

            xlist.add(x);
            ylist.add(y);
            xlist.add(x2);
            ylist.add(y2);

            martix.add(x);
            martix.add(y);
            martix.add(x2);
            martix.add(y2);


        }

        int maxX = Integer.MIN_VALUE;
        int maxY = Integer.MIN_VALUE;
        int minX = Integer.MAX_VALUE;
        int minY = Integer.MAX_VALUE;

        for (int i = 0; i < xlist.size(); i++) {
            int x = xlist.get(i);
            int y = ylist.get(i);
            if (x > maxX) {
                maxX = x;
            }
            if (x < minX) {
                minX = x;
            }
            if (y > maxY) {
                maxY = y;
            }
            if (y < minY) {
                minY = y;
            }
        }


        int m = maxX - minX;
        int n = maxY - minY;


        int [][] allMartix = new int [m][n];


        for (int i = 0; i < 3; i++) {

            int a = martix.get(4*i +2) - martix.get(4*i);

            int b = martix.get( 1 +4*i) - martix.get(1 +4*i +2);

            for(int j = 0; j < a; j++) {
                for(int k = 0; k < b; k++) {
                    int x = martix.get(4*i)+j;
                    int y = martix.get(4*i +1)-k-1;
                    allMartix[x-minX][y-minY]++;
                }
            }
        }

        int number = 0 ;
        for (int i = 0; i < allMartix.length; i++) {
            for (int j = 0; j < allMartix[i].length; j++) {
                if (allMartix[i][j] == 3) {
                    number++;
                }
            }
        }


        System.out.println(number);
    }


}
